package cn.itcast.consumer.client;

import cn.itcast.consumer.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * 远程调用，就是发送一个http的请求，例如本例中，查询用户，就是访问：
 *  GET http://user-service/user/1
 * Feign帮我们调用，就是帮我们发送一个http请求，需要知道：
 *  - 请求方式：GET              --> @GetMapping
 *  - 请求主机：user-service     --> @FeignClient("user-service"), Feign会去eureka根据服务id拉取服务列表
 *  - 请求路径：/user/{id}       -->  @GetMapping("/user/{id}")，通过注解获取其中路径
 *  - 请求参数：1                --> @PathVariable("id") Long id
 *  - 返回值类型：User            --> 通过方法的返回值
 *
 * @author 虎哥
 */
@FeignClient(value = "user-service", fallback = UserClientFallback.class, configuration = FeignConfig.class)
public interface UserClient {

    @GetMapping("/user/{id}")
    User queryById(@PathVariable("id") Long id);
}
